﻿/** 
 *   Ficha: ficha de juego.
 *  
 *   @see Juego Tablero
 *   @author Eduardo Masia Roman
 */

/* --------------------------------------------------         
   Parte de Damas - EMR
   Versiones hasta la fecha:
   
   Num.   Fecha       Por / Cambios
   ---------------------------------------------------
   0.01  22-May-2009  Eduardo Masia
                      Versión inicial: Estructura.
         01-Jun-2009  Eduardo Masia
                      Completado contructor.
                      Completado metodo dibujar.
 
 ---------------------------------------------------- */

namespace Damas
{
    class Ficha
    {
        private bool activa;
        private bool seleccionada;
        private bool esClara;
        private bool esReina;

        private short x;
        private short y;

        private const short TAMANOALTO = 50;
        private const short TAMANOANCHO = 65;

        private short incrX;
        private short incrY;

        private const byte PARPADEO = 25;
        private byte parpadeo;

        private const byte COLORCLARAR = 0xff;
        private const byte COLORCLARAG = 0xe4;
        private const byte COLORCLARAB = 0xb5;

        private const byte COLOROSCURAR = 0xb8; //2f
        private const byte COLOROSCURAG = 0x86; //4f
        private const byte COLOROSCURAB = 0x0b; //4f

        private const byte BORDECOLORR = 0x70;
        private const byte BORDECOLORG = 0x70;
        private const byte BORDECOLORB = 0x70;
        private const byte BORDEGROSOR = 5;

        private Jugador miJugador;

        public Ficha(Jugador j, short posX, short posY, bool claras)
        {
            miJugador = j;

            Activa = true;
            parpadeo = 0;

            x = posX;
            y = posY;

            if (claras)  //Definimos color de la ficha
            {
                esClara = true;
                incrY = -TableroImagen.CASILLAALTO;
            }
            else
            {
                esClara = false;
                incrY = TableroImagen.CASILLAALTO;
            }

            incrX = TableroImagen.CASILLAANCHO;
            esReina = false;
        }


        public void Dibujar()
        {
            if (!Seleccionada)
            {
                dibujarFicha();
                //parpadeo = 0;
            }
            else
            {
                if (parpadeo < PARPADEO / 2)
                {
                    dibujarFicha();
                }
                else
                {
                    if (parpadeo >= PARPADEO)
                        parpadeo = 0;
                }
                parpadeo++;
            }
        }


        private void dibujarFicha()
        {
            int j;
            byte colorR, colorG, colorB;

            if (esClara)
            {
                colorR = COLORCLARAR;
                colorG = COLORCLARAG;
                colorB = COLORCLARAB;
            }
            else
            {
                colorR = COLOROSCURAR;
                colorG = COLOROSCURAG;
                colorB = COLOROSCURAB;
            }

            for (j = 0; j < BORDEGROSOR; j++) //Damos grosor a la ficha
            {
                Hardware.ElipseRellenaRGBA(x,
                               (short)(y - j),
                               TAMANOANCHO/2, TAMANOALTO/2, 
                               BORDECOLORR, BORDECOLORG, BORDECOLORB, 0xff);
            }

            // Rellenamos ficha
            Hardware.ElipseRellenaRGBA(x,
                           (short)(y - j),
                           TAMANOANCHO/2, TAMANOALTO/2, 
                           colorR, colorG, colorB, 0xff);

            // Remarcamos borde ficha
            Hardware.ElipseRGBA(x,
                           (short)(y - j),
                           TAMANOANCHO/2, TAMANOALTO/2, 
                           BORDECOLORR, BORDECOLORG, BORDECOLORB, 0xff);
        }


        public void Mover()
        {
            // TODO: Mover ficha.
        }


        public bool Activa
        {
            get
            {
                return activa;
            }
            set
            {
                activa = value;
            }
        }


        public bool Seleccionada
        {
            get
            {
                return seleccionada;
            }
            set
            {
                seleccionada = value;
            }
        }


        public short X
        {
            get
            {
                return x;
            }
        }


        public short Y
        {
            get
            {
                return y;
            }
        }
    }
}
